using System;
using System.IO;

namespace Yahtzee.Game
{
    public class Beurt
    {

        private int beurtnr;

        private int worpnr;

        public DobbelsteenCollectie dobbelstenen = new DobbelsteenCollectie();

        private Scorecombinatie scoreCombinatie;

        public Beurt(int beurtnr)
        {
            this.beurtnr = beurtnr;
            this.worpnr = 0;
        }

        public void gooiMetDobbelstenen()
        {
            verhoogWorpNr();
            dobbelstenen.gooi();
            
        }

        public int[] geefOgen()
        {
            return dobbelstenen.geefOgen();
        }

        public void zetVast(bool[] zetvast)
        {
            dobbelstenen.zetVast(zetvast);
        }

        public bool[] geefVast()
        {
            return dobbelstenen.geefVast();
        }

        private void verhoogWorpNr()
        {
            if (worpnr >= 3)
            {
                throw new Exception("Maximaal aantal worpen overschreden");
            }
            worpnr++;
        }

        public int getBeurtnr()
        {
            return this.beurtnr;
        }

        public bool isBeurtAfgelopen()
        {
            return this.scoreCombinatie != null;
        }

        public void setScorecombinatie(Scorecombinatie scorecombinatie)
        {
            if (this.scoreCombinatie != null)
            {
                throw new InvalidOperationException();
            }
            this.scoreCombinatie = scorecombinatie;
            this.scoreCombinatie.setBeurt(this);
        }

        public int getWorpNr()
        {
            return worpnr;
        }

        public void print(TextWriter output)
        {
            output.Write("Beurt{0, 3}: worp {1, 2}: ", beurtnr, worpnr);
            dobbelstenen.print(output);
            output.WriteLine(" " + this.scoreCombinatie);
        }

    }
}